import { GameConfig } from "./GameConfig";
// import { UIMgr } from "../../../Framework/Scripts/Managers/UI/UIMgr";
import { AdTypes } from "./PlatDefine";
import { AdData } from "./SdkData";

/** SDK基类 */
export class SdkBase {

    /** 存储广告 */
    protected _adsList: { [key: number]: Array<AdData> } = {};

    /** 初始化 */
    public Init() { };

    /** 登录 */
    public Login() { }

    /** 支付 */
    public Pay() { }

    /** 支付 */
    public PayWithSever(data: { paySig: string, buyNum: number, successCallBack: (res) => void, failCallBack: (err) => void }) { }

    /** 分享 */
    public Share(data: { title: string, query: string }) { }

    /** 打开客服服务 */
    public OpenCustomerServiceConversation() { }

    /** 复制内容到剪切板 */
    public CopyText(text: string) { }

    /** 获取启动参数 */
    public GetLaunchOptionsSync(): any { }

    /** 短震 */
    public NormalVibrateShort() { }

    /** 监听小游戏进入后台 */
    public OnHide() { }

    /** 监听小游戏回到前台 */
    public OnShow() { }

    /**创建预加载广告 */
    public InitAd() { };

    /**预加载视频 */
    public PreloadVedio() { }

    /**视频广告 */
    public CreateVideo() { }

    /**显示视频广告 */
    public ShowVideo(ads: AdData) { ads && ads.AdClose(false); }

    /** 获取广告数据 */
    public GetAdData(adType: AdTypes, index: number = 0): AdData {
        let adsList = this._adsList[adType];
        if (!adsList) {
            let ads = new AdData(adType);
            this._adsList[adType] = [];
            this._adsList[adType].push(ads);
        }
        return this._adsList[adType][index];
    }

    /** 创建广告数据 */
    public CreateAdData(adType: AdTypes) {
        let ads = new AdData(adType);
        !this._adsList[adType] && (this._adsList[adType] = []);
        this._adsList[adType].push(ads);
        return ads;
    }

    /** 展示广告 */
    public ShowAd(adType: AdTypes, showFunc: Function, closeFunc: Function, params?: any) {
        if (!GameConfig.isShowAd) {
            // UIMgr.Instance.IE_ShowAlert("暂无广告");
            return;
        }

        let ads = this.GetAdData(adType);

        //防止狂点
        if (ads.isShow) {
            return;
        }

        ads.setAds(showFunc, closeFunc, params)
        ads.isShow = true;

        switch (adType) {
            case AdTypes.Video:
                this.ShowVideo(ads);
                break;
            default:
                break;
        }
    }

    /** 插屏展示 */
    createInterstitialAd(){

    }
    /** 激励展示 */
    createRewarded(){

    }
    /** 设为常用 */
    addCommonUse(){

    }
    /** 设为桌面 */
    addShortcut(){

    }


}